// src/stores/user.js
import { defineStore } from 'pinia'
import { ElMessageBox, ElMessage, ElLoading } from 'element-plus'
import router from '@/router'
import request from '@/utils/request' // 假设你有封装的请求工具

export const useUserStore = defineStore('user', {
  state: () => ({
    token: localStorage.getItem('token') || '',
    userInfo: {},
    isLogin: localStorage.getItem('isLogin') === 'true' || false
  }),
  actions: {
    // 退出登录（整合弹窗确认和登出逻辑）
    async logout() {
      try {
        // 显示确认对话框
        await ElMessageBox.confirm('确定要退出登录吗？', '提示', {
          confirmButtonText: '确认',
          cancelButtonText: '取消',
          type: 'warning'
        })
        
        // 显示加载状态
        const loading = ElLoading.service({
          lock: true,
          text: '正在退出...',
          background: 'rgba(0, 0, 0, 0.1)'
        })
        
        // 调用后端API（如果需要）
        await request.post('/api/user/logout')
        
        // 清除本地存储
        localStorage.removeItem('token')
        localStorage.removeItem('isLogin')
        
        // 重置状态
        this.token = ''
        this.userInfo = {}
        this.isLogin = false
        
        // 跳转到登录页
        await router.push('/login')
        
        // 刷新页面以清除缓存
        window.location.reload()
      } catch (error) {
        // 处理取消或错误
        if (error !== 'cancel') {
          console.error('登出失败:', error)
          ElMessage.error('登出失败，请重试')
        }
      } finally {
        // 隐藏加载状态
        ElLoading.service().close()
      }
    },
    
    // 获取用户信息
    async fetchUserInfo() {
      try {
        const res = await request.get('/api/user/info')
        this.userInfo = res.data
        this.isLogin = true
      } catch (error) {
        console.error('获取用户信息失败:', error)
        this.isLogin = false
      }
    }
  }
})